<?php

namespace app\admin\controller;


use think\exception\ValidateException;
use think\facade\Filesystem;
use think\Request;

class Upload extends Base
{
    /**
     * 上传logo图片（单文件）
     * @param type goods|brand|category
     * @param logo file
     * @return \think\Response
     */
    public function logo()
    {
        $params = input();
        $type = $params['image_type'] ?? 'other';
        //获取文件信息（对象）
        $file = request()->file('logo');
        if (empty($file)) {
            //必须上传商品logo图片
            $this->fail('请上传文件');
        }

        try {
            validate([
                'logo'=>'filesize:102040|fileExt:jpg,png,gif,jpeg'
            ])->check(['logo'=>$file]);
        }catch (ValidateException $e){
            //上传出错
            $this->fail($e->getMessage());
        }

        //将文件移动到指定的目录（public 目录下  uploads目录 goods目录）
        $dir = app()->getRootPath().'public'.'/'.'uploads'.'/'.$type;
        if(!is_dir($dir)) mkdir($dir);

        $savename = Filesystem::disk('public')->putFile('uploads'.'/'.$type,$file);
        //拼接图片的访问路径
        $logo = '/'.$savename;


        //拼接图片的访问路径

        $this->ok($logo);
    }
    public function image()
    {
        $params = input();
        $type = $params['image_type'] ?? 'other';
        //获取文件信息（对象）
        $file = request()->file('image');
        if (empty($file)) {
            //必须上传商品图片
            $this->fail('请上传文件');
        }
        try {
            validate([
                'image'=>'filesize:102040|fileExt:jpg,png,gif,jpeg'
            ])->check(['image'=>$file]);
        }catch (ValidateException $e){
            //上传出错
            $this->fail($e->getMessage());
        }
        //将文件移动到指定的目录（public 目录下  uploads目录 goods目录）
        $dir = app()->getRootPath().'public'.'/'.'uploads'.'/'.$type;
        if(!is_dir($dir)) mkdir($dir);

        $savename = Filesystem::disk('public')->putFile('uploads'.'/'.$type,$file);
        //拼接图片的访问路径

//        $savename = preg_replace("\\",'/',$savename);

        $logo = '/'.$savename;

        $this->ok($logo);
    }

    /**
     * 上传相册图片 多文件
     * @param type goods  default:goods
     * @param images files
     * @return array ['success'=>[], 'error'=>[]]
     */

    public function images()
    {
        $params = input();
        $type = $params['type'] ?? 'goods';
        //获取文件信息（对象）
        $files = request()->file('images');
        if (empty($files)) {
            //必须上传商品logo图片
            $this->fail('请上传文件');
        }
        //将文件移动到指定的目录（public 目录下  uploads目录 goods目录）
        $dir = app()->getRootPath().'public'.'/'.'uploads'.'/'.$type;
        if(!is_dir($dir)) mkdir($dir);
        $data = ['success'=>[], 'error'=>[]];
        foreach($files as $file){
            try {
                validate([
                    'logo'=>'filesize:102040|fileExt:jpg,png,gif,jpeg'
                ])->check(['logo'=>$file]);
                $savename = Filesystem::disk('public')->putFile('uploads'.'/'.$type,$file);
                $data['success'][] = $savename;
            }catch (ValidateException $e){
                //上传出错
                $data['error'][] = [
                    'name'=>$file->getInfo('name'),
                    'msg'=>$file->getError(),
                ];
            }

//            $info = $file->validate(['size' => 10*1024*1024, 'ext' => ['jpg', 'png', 'gif', 'jpeg']])->move($dir);
//            if ($info) {
//                //拼接图片的访问路径
//                $data['success'][] = DS . "uploads" . DS . $type . DS . $info->getSaveName();
//            }else{
//                $data['error'][] = [
//                    'name'=>$file->getInfo('name'),
//                    'msg'=>$file->getError(),
//                ];
//            }
        }
        $this->ok($data);
    }

}
